#include <stdio.h>
#include <stdlib.h>
#include "stack.h"


stack_st *stack_create(void)
{
	stack_st *ptr = malloc(sizeof(*ptr));
	if(ptr == NULL)
		return NULL;
	ptr->top = -1;
	return ptr;
}

int stack_push(stack_st *ptr,Datatype *data)
{
	if(ptr->top == M-1)
		return -1;
	ptr->data[++(ptr->top)] = *data;
	return 0;
}

int stack_pop(stack_st *ptr,Datatype *data)
{
	if(stack_isempty(ptr))
		return -1;
	*data = ptr->data[ptr->top--];
	return 0;
}

int stack_top_get(stack_st *ptr,Datatype *data)
{
	if(stack_isempty(ptr))
		return -1;
	*data = ptr->data[ptr->top];
	return 0;
}

int stack_isempty(stack_st *ptr)
{
	return (ptr->top == -1);
}

int stack_display(stack_st *ptr)
{
	if(stack_isempty(ptr))
		return -1;
	for(int i = 0;i <= ptr->top;i++)
		printf("%d ",ptr->data[i]);
		printf("\n");
		return 0;
}

void stack_destroy(stack_st *ptr)
{
	free(ptr);
}
